DEVICE EPICPOS

0.1 Introduction

0.2 Installation

0.2.1 Device declaration in the configuration file (.CNF)

In the configuration file (.CNF), the BUS section must be declared so that you have the hardware resources required for the implementation of the EPICPOS device. There must be at least a bi-directional meter and a 16-bit resolution analog output. The device can also be used with an input and an interrupt line for preset search functions.
In the INTDEVICE section of the .CNF file must be add the following definition:

;---------------------------------
; Internal device declaration
;---------------------------------
INTDEVICE
..
<device_name>  EPICPOS  TCamp  ICont  IntL  IAZero  IOutA
:info:It is necessary that each definition are present on the same line. In case you do not want to assign a resource, for example IAZero, you must enter in the appropriate field the string X.X.

where:

<device name>The name given to the device.
EPICPOSKeyword that identifies the epicicloidal positioner devices.
TCampTime sampling device (1÷255 ms).
IContBidirectional counter input.
IntLNumber of the interrupt line dedicated to the encoder zero pulse during the phase of presets search.
Allowed values: 1÷8 (to prevent the device uses this resource, enter the character X).
IAZeroInput of enable to acquire the the transducer's zero pulse during the preset search (to prevent the device uses this resource enter characters X.X)
IOutAHardware address of the DAC from analog output.

0.2.1.1 Example

;---------------------------------
; Internal device declaration
;---------------------------------
INTDEVICE
Axis_X   EPICPOS   2   2.CNT02   3   3.INP01   3.AN01

0.3 Operation

0.3.1 Position detection

The EPICPOS device acquires the position of the axis via bi-directional transmitter signals of transducer; these signals are used by an internal counter. The value of this counter not express, genereally, directly the position of the axis in the unit of measure required by your application. The cntratio parameter is used then to express the relationship between the impulses the transducer and the corresponding application units. The permitted values for this parameter are 0,00374 ÷ 4 with five digits of precision. The report must be introduced in the parameter as an integer value, and then multiplied by 100000.
cntratio = (value in um) x 10 decimal digits / (corresponding transductor pulse) x 100000

0.3.1.1 Decimal point

If for the selected unit of measure is also provided for the presence of a decimal point, the locations must be represented as an integer value and represent space in units without decimal point. The resolution must be calculated with the same formula and the numerator the greatness without decimal point. The decimal point will be then inserted in the value representing the time viewers (example: as properties in the HMI).

0.3.1.2 Speed

The speeds are always expressed in whole units of measure in the unit of time choice. From this it emerges that the device must know the location of the decimal point of the unit of measure and this is done with the decpt parameter. This parameter can take values 0÷3.

0.3.1.3 Example

:tip:To activate this device send the INIT command.

As told to calculate the resolution you have to consider the space runs represented in terms of the measuring unit mm. The resolution is:
cntratio = (18.2 x 101 / 500) x 100000 = 36400

The settings must be: Axis:cntratio = 36400 Axis:decpt = 1

To run a placement at 146 cm, must type Axis:setpos = 1460

To set a speed of 10 centimeters per second, must type : Axis:unitvel = 1 Axis:setvel = 10

0.3.2 Analog output adjustment

:tip:Before starting actual placements you must make sure that electrical connections and mechanical appliances have not of malfunctions cause.

For the axis managing, the EPICPOS device using an analog output range ±10 V and 16 bit resolution with sign; with the calibration function this analog output can be command with a costant value in order to test links and functionality.

0.3.2.1 Preliminary motion

0.3.2.2 Output adjustment

The EPICPOS device generate the voltage value of the analogue output on the basis of a ratio between the maximum velocity of the axis and the maximum output voltage. Proportionality is obtained with the maxvel parameter, maximum axis speed representative on the analog voltage (10 V). Obviously the axle must behave symmetric compared to analog voltage zero value, Therefore the speed must be the same on both the positive and negative voltages at maximum.
Before to determining the value of maximum velocity, We must establish the unit of time to use for the representation of the velocity in the device; the unitvel parameter defines the unit of time of speed (Um/min or Um/s).

0.3.2.3 Theoretical method for the determination of the maximum speed

The theoretical method is a calculation that was performed on the basis of maximum motor speed. Once established the maximum revolutions per minute declared on the motor, We get the maximum velocity is expressed in the unit of measure the unit of time chosen.
Enter the value of maximum velocity calculated in the maxvel parameter.

0.3.2.4 Practical method for determining the maximum speed

The practical method is based on the reading of the speed detected by the device in the vel parameter, provide at the drive a known voltage. To provide the voltage to drive the device should be placed in a position of calibration as described in the previous paragraph. If the system permits, supply voltage operation 10 V and read the speed value in the vel parameter. If, on the other hand, is an excerpt of the output voltage (1, 2, … 5 V), calculate the maximum velocity with a proportion.
Enter the maximum speed value found in maxvel parameter.

0.3.3 Movement

:tip:Before movement the axis, check the proper operation of emergency equipment and protection.

The procedures described here have allowed us to complete the first phase of setting parameters for the device. Now you can execute the simple movement of the axis.

This first movement was done without the feedback of space. The placement may have been executed with some error introduced by the non-linearity of the components or an imperfection in the maximum velocity calibration. Subsequently enabling space feedback this error goes away.

0.3.4 PID+FF adjustment

The placement runs in the preceding paragraph has been made without considering any position errors.
To check the correct position of the axis continuously and automatically, you need to have a feed-back on the position; for this reason introduces the PID+FF control algorithm including proportional, integral, derivative and feed-forward actions; the value of the analog output is given by the summation of feed forward, proportional, derivative and integrative actions.
Without going into the merits of a technical description of the theory of regulation, This section describes a series of actions to adjust the parameters that affect this control.
In order to achieve a satisfactory adjustment is sufficient to use only the feedforward and proportional actions; integral and derivative actions are used only for adjustments under special conditions.

0.3.4.1 Feed forward action

The feed-forward helps make the system more ready on placements, by providing the analog output voltage proportional to the theoretical speed of positioning. In practice it is the component which you performed the placements of the previous chapter.
The contribution of this action can be adjusted with the feedfw parameter; This parameter is expressed as 1/1000 speed theoretical portion; so, to introduce such as 98.5% you must set 985 (thousandths).

0.3.4.2 Proportional action

This action provides an output proportional to the instantaneous axis position error. The extent of the proportional action is defined by the pgain parameter that defines the sensitivity of the system.
The pgain parameter is introduced in thousandths; the unit value of the gain (1000) provides an analog output to maximum value (10 V) relative to the maximum speed error. For maximum speed error means the space covered by axis - at he maximum speed - for the duration of the sampling time of the device.

0.3.4.3 Integral action

Integrates the position error of the system over time set in integt parameter updating the release until the error is not canceled.
More lower the integration time of the error, more faster the recovery system error, but the system can become unstable, tending to swing.

0.3.4.4 Derivative action

Anticipates the change of the motion of the system tends to eliminate the overshoot of the positioning. The magnitude of change is calculated over time set in derivt parameter.
More higher the time of derivation of error and more faster the transient error recovery system, but if you enter a value that is too high the system becomes unstable, tending to fluctuate.

Searching for presets is a procedure to synchronize the count (posit parameter) with the real position of the axis. Can be execute in 3 different ways according to the prsmode parameter.

0.3.5.1 Preliminary considerations

Once you start search presets with the PRESET command, the axis towards the position where the zero pulse enable input transducer with speed defined by prsvel. The st_prson state you turn to report the current preset. When, in its rush, the active axis this input, reverses direction and starts with speed sprsvel.
At this point the behavior depends on the manner of loading selected (Mode 0 or Mode 1).

0.3.5.2 Preset search - Mode 0

:info:This procedure involves the movement of the axis and the use of the zero pulse enable input transducer.

To the deactivation of the zero-pulse enable trasducer input, the preset quota is loaded on the counting (parameter posit=prspos). Next, you disable the st_prson status and active the st_prsok state to signal the end of search. This State remains active until the starting of a new presets procedure; when the system is powered this State is always zero. See picture 1.

Picture 1: preset loading using the only enabling cam.

0.3.5.3 Preset search - Mode 1

:info:This procedure involves the movement of axis and using the zero pulse inputs and enabling zero-pulse transducer.

To the deactivation of the zero-pulse enable transducer input, enables reading of the first zero-pulse provided by the transducer and, on this signal, it loads the preset quota in counting (parameter posit = prspos). To To allow the load of the preset quota with “Mode 1”, the card which is attached to the zero-pulse translator must transmit this signal on one of the 8 hardware interrupt lines. Moreover, the device must have been defined to use the same hardware interrupt line (See definition in the file .CNF).
Subsequently, the axis place at the preset quota, it disable the st_prson status and active the st_prsok state to signal the end of search; this State remains active until the start of a new process of presets. At the power on of the system st_prsok is always to zero. See picture 2.

Picture 2: loading preset using the enable cam and zero-pulse transducer.

0.3.5.4 Search preset - Mode 2

:info:This procedure does NOT provide for the handling of the axis and the use of the zero-pulse transducer enable input.

With this procedure, the preset search does not execute any positioning. The preset quota load command is supply from the activation of the enable input zero encoder and the st_prsok state is set to one.
If the input is a continuous load remains activated while, if at power up the input is already active, the first upload is executed only after its deactivation and activation.

0.4 Special functions

0.4.1 Multi axis management

In some applications you are prompted to place a large number of axes by moving a single axis at a time. The design choice falls on installing just one drive that depending on the axis to be placed electrically connects the motor interested in positioning; the transducer is always bound to its axis.
The EANPOS device allows you to control access to the DAC device using the REGON and REGOFF commands. In this way through the QCL application defines a set of device many axes to be placed; in the definition, all devices use the same DAC resource (IOutA).
Normally all devices must be in the st_regoff = 1 state so you will not have access to the DAC device. Before you start positioning, with the REGON command, the device is brought to the st_regoff = 0 state. Runs the placement and completion,the device is returned in the state of st_regoff = 1 with the REGOFF command. For no reason two devices simultaneously must be found in the st_regoff = 0 state. When the device is placed in the position of regoff, the analog output remains fixed at the last voltage value called before the REGOFF command.

0.4.2 Change quota and counting in motion

:tip:Changing the quota is accepted only if the new position is reached with management in use and if the axis is not already when slowing down to reach the quota previously set.

In some applications you are prompted to define the target quota during placement, according to external events to the device. This means you can also write to the setpos parameter with placements occurring.

When positioning you can also change the value of the posit count. This function is usually used when a device must, under special conditions, continue a speed profile for a very long time, that exceeds the time axis takes to reach the limit quota (maxpos or minpos).

0.4.3 Change speed and moving ramp time

When positioning it is possible to vary the speed of the axis without affecting the location to get to. This can lead to an increase or a decrease in velocity, even more points with the same placement. This is accomplished with new writing in the setvel parameter.

When positioning can be varied even acceleration/deceleration times. For example, the device can start a placement with a very short ramp and, reached the speed set, the tacc parameter is changed and executed a change of speed with a very long ramp.
For special applications the ramp time can be varied even during a change of speed, in this case the new time is put into execution immediately.

0.4.4 Delta count

:tip:The command can be sent only if the axis is stopped, condition of st_still = 1.

The device always shows the absolute position of the axis; to execute incremental placements it is necessary to have a tool to subtract or add some value to the count (posit) without introducing errors. The change can also count with a direct writing to the new value in the posit parameter.
Wanting to steal 100 units of measure you can count:
Axis:posit = Axis:posit - 100

:info:The changing of the value of resolution (cntratio) or write to the posit variable, causes the reset of the remnants of the conversion.

This operation introduces an error because it imposes the location “posit = -100”, when the axis could have an intermediate position between a unit of measurement and subsequent (example 100.3). This fraction (0.3) is lost and the repetition of these steps will the accumulation of a considerable error.
The DELCNT command, count sum an amount equal to the delta parameter without losing the fraction part of the position:
Axis:delta = -100
DELCNT Axis
The DELCNT command may be sent only with stationary axis (st_still=1)

Esempio

La lettura della posizione dell’asse risulta essere di 2 unità e si trova nel punto A. Si vuole sommare al conteggio posit tre unità di misura.
Con le istruzioni:
Asse:posit = Asse:posit + 2
l’asse assume la nuova posizione B.
Con le istruzioni:
Asse:delta = 2
DELCNT Asse
viene raggiunta la posizione C.

Si noti che con le prime istruzioni l’asse ha compiuto un delta inferiore a 3 unità e quindi è stato introdotto un errore.
Se si devono inviare comandi DELCNT in successione, é conveniente calcolare la grandezza da sommare ed inviare una sola volta il comando; in caso contrario prestare attenzione a non inviare comandi successivi senza interporre una istruzione di lettura su parametro device.

Esempio

Asse:delta = 3
DELCNT Asse
WAIT Asse:st_init
Asse:delta = 40
DELCNT Asse

Tabella comandi e parametri

Simbologia adottata

Il nome del parametro, stato o comando viene riportato alla sinistra della tabella.

R
Indica se il relativo parametro o stato è ritentivo (al momento dell’inizializzazione del device mantiene lo stato precedentemente definito), oppure lo stato che assume al momento dell’inizializzazione del device.
Se il device non necessita di inizializzazione il campo “R” indica il valore che il parametro o stato assume all’accensione della scheda.
R = Ritentivo
0 = Al momento dell’inizializzazione del device il valore viene forzato a zero.
1 = Al momento dell’inizializzazione del device il valore viene forzato a uno.
- = Al momento dell’inizializzazione del device viene presentato il valore significativo.

D
Indica la dimensione del parametro.
F = Flag
B = Byte
W = Word
L = Long
S = Single Float

Condizioni

Vengono descritte tutte le condizioni necessarie affinchè il parametro sia considerato corretto o perchè il comando venga accettato.
In alcuni casi vengono specificati dei valori limite per l’accettazione del parametro: se vengono introdotti dei valori esterni ai limiti impostati, il dato viene comunque accettato; pertanto devono essere previsti opportuni controlli dell’applicativo tali da garantire il corretto funzionamento.
Per l’esecuzione di un comando, tutte le relative condizioni devono necessariamente essere soddisfatte; in caso contrario il comando non viene eseguito.

A
Indica la modalità di accesso.
R = Read (lettura).
W = Write (scrittura).
RW = Read / Write.

Comandi

I comandi sono stati ordinati con priorità decrescente. Ad esempio, in caso di contemporaneità dei comandi INIT ed EMRG, viene acquisito per primo il comando INIT.

NomeCondizioniDescrizione
INITst_init = 0Initialization
Comando di inizializzazione device.
Se il device non é inizializzato non vengono eseguiti i calcoli relativi all'asse e quindi rimane inattivo. All'accensione è possibile scaricare tutti i parametri in DPR; successivamente, con comando INIT l'asse verrà inizialiazzato, eseguendo i calcoli una sola volta.
Attiva lo stato st_init.
EMRGst_init = 1Emergency
Pone in emergenza l'asse interrompendo, senza rampa di decelerazione, l'eventuale posizionamento in corso. Viene inoltre disabilitata la reazione di spazio dell'asse.
RESUMEst_init = 1
st_emrg = 1
Resume
Ripristino della condizione di emergenza dell'asse; viene riabilitata la reazione di spazio.
All'acquisizione dello start, l'asse riprende il posizionamento.
STARTst_init = 1
st_regoff = 0
st_emrg = 0
st_emrg = 0
st_still = 1
Start
Comanda il posizionamento alla quota setpos e velocitá setvel.
STOPst_init = 1
st_regoff = 0
st_emrg = 0
st_cal = 0
st_still = 0
Stop
Interrompe l'eventuale posizionamento in corso dell'asse. La fermata dell'asse avviene seguendo la rampa di decelerazione in uso. L'asse rimane in reazione di spazio.
LOOPONst_init = 1Loop ON
Abilita la reazione di spazio asse.
L'uscita analogica contrasta ogni azione esterna che tenti di spostare l'asse dalla posizione raggiunta (deriva, operatore, …). Questa operazione azzera l'eventuale errore di inseguimento follerr.
LOOPOFFst_init = 1Loop OFF
Disabilita la reazione di spazio asse.
L'asse può essere spostato dalla sua posizione senza che l'uscita analogica contrasti il movimento.
CNTLOCKst_init = 1Counter lock
Blocca l'acquisizione del conteggio asse anche se il trasduttore continua ad inviare i segnali. In questa fase l'eventuale spostamento dell'asse non viene rilevato. Disabilita il caricamento della quota di preset sul conteggio.
Attiva lo stato st_cntlock
CNTUNLOCKst_init = 1Counter unlock
Sblocca il conteggio dell'asse.
Viene ripresa la lettura dei segnali inviati dal trasduttore e l'aggiornamento del conteggio.
Disattiva lo stato st_cntlock.
CNTREVst_init = 1Counter reverse
Consente di invertire le fasi del trasduttore all'interno della scheda.
Viene quindi invertito il senso del conteggio (incremento/decremento).
Attiva lo stato st_cntrev.
CNTREVst_init = 1Counter reverse
Consente di invertire le fasi del trasduttore all'interno della scheda.
Viene quindi invertito il senso del conteggio (incremento/decremento).
Attiva lo stato st_cntrev.
CNTDIRst_init = 1Counter direct
Il conteggio dell'asse non viene invertito.
Disattiva lo stato st_cntrev.
PRESETst_init = 1
st_regoff = 0
st_emrg = 0)
st_cal = 0
st_still = 1
Preset
Start ricerca preset asse.
Viene dato inizio alla procedura di ricerca di preset con le modalità impostate con i parametri prsmode e prsdir. Se la ricerca di preset è già in esecuzione, il comando esegue l'inversione del senso di ricerca.
Attiva lo stato st_prson e disattiva lo stato st_prsok.
CALONst_init = 1Calibration ON
L'uscita analogica viene impiegata come generatore di tensione; in questo caso non è possibile usarla per posizionare l'asse. Il valore in uscita è settabile a piacere tramite la variabile vout.
CALOFFst_init = 1
st_cal = 1
Calibration OFF
L'uscita analogica non viene gestita come generatore di tensione, pertanto può essere nuovamente usata per la gestione dei posizionamenti.
MANFWst_init = 1
st_regoff = 0
st_prson = 0
st_still = 1
Manual forward
Comanda il posizionamento manuale in avanti (verso maxpos) alla velocitá impostata.
MANBWst_init = 1
st_regoff = 0
st_prson = 0
st_still = 1
Manual backwar
Comanda il posizionamento manuale in indietro (verso minpos) alla velocitá impostata.
REGOFFst_init = 1
st_still = 1
Regulation ON
Disabilita la regolazione e l'aggiornamento del DAC, nonché tutti i comandi di movimento.
REGONst_init = 1
st_regoff = 1
Regulation OFF
Riabilita la regolazione e l'aggiornamento del DAC, nonché tutti i comandi di movimento.
DELCNTst_init = 1
st_still = 1
Delta counter
Questo comando viene accettato solamente se l'asse è fermo; il conteggio (posizione dell'asse) viene modificato sommandogli algebricamente il valore specificato nella variabile delta.

Parametri

NomeDRACondizioniDescrizione
cntratioLRR-Wst_still = 1Counter ratio
Definisce per quanto vanno moltiplicati gli impulsi del trasduttore in modo che l'acquisizione degli spostamenti venga espressa nell'unità di misura desiderata. Impostando 100000 la variazione del conteggio è di 1 bit per impulso trasduttore.
Range valido: 347 ÷ 400000
maxposLRR-Wst_still = 1Maximum position
Definisce la massima quota raggiungibile dall'asse; il valore impostato è da considerarsi anche come limite massimo per l'introduzione delle quote di lavoro. Valore espresso in unità di misura (Um).
Range valido: -999999 ÷ 999999
minposLRR-Wst_still = 1Minimum position
Definisce la minima quota raggiungibile dall'asse; il valore impostato è da considerarsi anche come limite minimo per l'introduzione delle quote di lavoro. Valore espresso in unità di misura (Um).
Range valido: -999999 ÷ 999999
prsposLRR-Wst_still = 1Preset position
Definisce il valore che viene caricato sul conteggio con la procedura di ricerca di preset.
Range valido: minpos÷maxpos
maxvelLRR-Wst_still = 1Maximum velocity
Definisce la massima velocità dell'asse (relativa al riferimento analogico di +/-10V). Il valore introdotto è nell'unità di tempo della velocità impostata Velocity unit.
Range valido: 0 ÷ 999999 (Um/s o Um/min)
prsvelLRR-Wst_still = 1Preset velocity
Definisce la velocità dell'asse durante la procedura di ricerca di preset. Il valore introdotto è nell'unità di tempo della velocità impostata (Velocity unit).
Range valido: 0 ÷ maxvel
sprsvelLRR-Wst_still = 1Preset search velocity
Nella procedura di ricerca di preset, definisce la velocità dell'asse nella fase di acquisizione dell'impulso di zero. Il valore introdotto è nell'unità di tempo della velocità impostata (Velocity unit).
Range valido: 0 ÷ prsvel
tollLRR-Wst_still = 1Tolerance
Definisce una fascia di conteggio intorno alle quote di posizionamento. Se il posizionamento si conclude entro tale fascia, è da considerarsi corretto. Valore espresso in unità di misura (Um).
Range valido: -999999 ÷ 999999
maxfollerrLRR-WNessunaMaximum following error
Definisce il massimo scostamento accettabile tra la posizione teorica e la posizione reale dell'asse. Il valore introdotto è espresso in bits trasduttore moltiplicato per 4.
Range valido: 0 ÷ 2147483648
rampmodeBRR-Wse st_still = 1 scrittura sempre
abilita, se st_still = 0 il nuovo
valore viene memorizzato ma
processato solamente se i
nuovi tempi di acc.e dec.
permettono di raggiungere la
quota impostata.
Acceleration/deceleration time mode
Utilizzato per la scelta tra rampe di accelerazione e decelerazione uguali o differenziate.
Valori ammessi:
0 = rampe uguali
1 = rampe differenziate
taccdecWRR-Wse st_still = 1 scrittura sempre
abilita, se st_still = 0 il nuovo
valore viene memorizzato ma
processato solamente se i nuovi
tempi di acc. e dec. permettono
di raggiungere la quota
impostata.
Acceleration/deceleration time
É il tempo necessario per passare da velocitá 0 a velocitá massima e viceversa; il parametro è utilizzato se rampmode = 0. Valore espresso in centesimi di secondo.
Range valido: da 0 a 999
taccWRR-Wse st_still = 1 scrittura sempre
abilita, se st_still = 0 il nuovo
valore viene memorizzato ma
processato solamente se il nuovo
tempo permette di raggiungere
la quota impostata.
Acceleration time
Definisce il tempo necessario all'asse per accelerare da zero (asse fermo) alla velocità massima. Il valore introdotto è espresso in centesimi di secondo.
Range valido: da 0 a 999
tdecWRR-Wse st_still = 1 scrittura sempre
abilita, se st_still = 0 il nuovo
valore viene memorizzato ma
processato solamente se il nuovo
tempo permette di raggiungere
la quota impostata.
Deceleration time
Definisce il tempo necessario all'asse per decelerare dalla velocità massima a zero (condizione di asse fermo). Il valore introdotto è espresso in centesimi di secondo.
Range valido: da 0 a 999
tinvWRR-WNessunaDirection inversion delay
Viene utilizzato per evitare stress meccanici dovuti a troppo rapide inversioni del senso di movimento. Il valore introdotto è espresso in centesimi di secondo.
Range valido: da 0 a 999
rtypeBRR-WNessunaReduction type
0 = I tempi di accelerazione e decelerazione rimangono quelli della velocitá impostata e viene diminuita proporzionalmente la velocitá.
1 = Vengono diminuiti i valori sia dei tempi di accelerazione e decelerazione, sia della velocitá.
stoptBRR-WNessunaStop type
0 = Quando di esegue la frenata in rampa viene completata prima l'accelerazione e poi la frenata.
1 = Viene immediatamente eseguita la frenata
toldlyWRR-WNessunaTolerance delay
Definisce il tempo che intercorre tra l'arrivo dell'asse nella fascia di tolleranza e la relativa segnalazione di stato. Valore espresso in centesimi di secondo.
Range valido: da 0 a 999
pgainWRR-WNessunaProportional ga
Impostando il valore 1000, il coefficente è 1.000
È il coefficente che moltiplicato per l'errore di inseguimento genera la parte proporzionale dell'uscita di regolazione.
Range valido: da 0 a 32767
feedfwWRR-WNessunaFeed forward
Impostando il valore 1000, la percentuale è del 100%.
È il coefficiente percentuale che, moltiplicato per la velocità, genera la parte feed-forward dell'uscita di regolazione.
Range valido: da 0 a 32767
integtWRR-WNessunaIntegral time
È il tempo, espresso in millisecondi, che produce il coefficiente di integrazione dell'errore di inseguimento. L'integrazione di tale errore moltiplicata per tale coefficente genera la parte integrale dell'uscita di regolazione.
Range valido: da 0 a 32767
derivtWRR-WNessunaDerivative time
È il tempo, espresso in millisecondi, che produce il coefficiente derivativo dell'errore di inseguimento. La derivazione di tale errore moltiplicata per tale coefficente genera la parte integrale dell'uscita di regolazione.
Range valido: da 0 a 32767
prsmodeBRR-WNessunaPreset mode
Definisce il tipo di ricerca di preset:
0 = Per la ricerca dell'abilitazione impulso di zero, l'asse inizia il movimento in veloce, incontra la camma di abilitazione, inverte la direzione rallentando e, sul fronte di discesa relativo al segnale di camma, carica la quota di preset.
1 = Per la ricerca dell'abilitazione impulso di zero, l'asse inizia il movimento in veloce, incontra la camma di abilitazione, inverte la direzione ed in lento acquisisce il primo impulso di zero (dopo la disattivazione del segnale di camma).
2 = Non viene attivata la procedura di ricerca preset con movimentazione dell'asse. Il conteggio viene aggiornato alla quota di preset all'attivazione dell'abilitazione impulso di zero.
prsdirBRR-WNessunaPreset direction
Definisce la direzione del movimento asse per la ricerca della camma di abilitazione impulso di zero.
0 = l'asse si dirige in avanti.
1 = l'asse si dirige indietro
unitvelBRR-Wst_still = 1Velocity unit
Definisce se l'unità di tempo della velocità è espressa in minuti o secondi.
0 = Um/min
1 = Um/sec
decptBRR-Wst_still = 1Decimal point
Definisce la precisione con la quale si intendono impostare le preselezioni e visualizzare i conteggi relativamente all'asse.
Range valido: da 0 a 3.
offsetWRR-WNessunaOffset
Offset uscita DAC in bit.
Definisce il valore in bit della correzione relativa all'uscita analogica in modo da compensare l'eventuale deriva del sistema. Valore espresso in bit DAC.
Range valido: da -32768 a 32
setposLRR-Wse st_still = 1 scrittura
sempre abilitata , se st_still
= 0 scrittura abilitata se la
nuova quota puó essere
raggiunta con la stessa
direzione di posizionemat.
Il parametro viene alterato
se eseguita una ricerca di
preset con prsmode = 0 o 1.
Setted position
Definisce la quota di posizionamento raggiungibile dall'asse x alla velocità setvelx.
Range valido: da minpos a maxpos
N.B. Il valore viene alterato se si comanda una procedura di ricerca preset con prsmode = 0 o 1.
setvelLRR-Wse st_still = 1 scrittura sempre
abilita, se st_still = 0 il nuovo
valore viene memorizzato ma
processato solamente se l'asse
non é in decelerazione per
raggiungere la quota impostata.
Il parametro viene alterato se
eseguita una ricerca di preset
con prsmode = 0 o 1.
Setted velocity
É il valore della velocitá di posizionamento.
Valore espresso in Um/s o Um/min.
Range valido: 0 ÷ maxvel
voutB0R-Wst_cal = 1Volt out
É il valore della tensione di uscita, espressa in decimi di volts, da usare nella procedura di calibrazione. Valore espresso in decimi di V.
Range valido: -100 ÷ 100
velL0RNessunaVelocity
È il valore della velocitá istantanea dell'asse.
Valore espresso in Um/s o Um/min.
frqL0RNessunaFrequency
È il valore della frequenza istantanea dell'asse.
Valore espresso in Hz.
positLRR-Wse st_still = 1 scrittura
sempre abilita, se st_still = 0
il nuovo valore viene
processato solamente se
l'asse non é in decelerazione
per raggiungere la quota
impostata.
Actual position
È il valore della posizione istantanea dell'asse. Valore espresso in unità di misura (Um).
Range valido: -999999 ÷ 999999
follerrL0RNessunaFollowing error
É il valore istantaneo dell'errore di inseguimento.
Valore espresso in bit trasduttore
ffwdregL0RNessunaFeed-forward register
È il valore istantaneo del registro di feed-forward espresso in bit.
propregL0RNessunaProportional register
È il valore istantaneo del registro proporzionale espresso in bit.
intregL0RNessunaIntegral register
È il valore istantaneo del registro integrale espresso in bit.
Range valido: 0 ÷ 1024
derregL0RNessunaDerivative register
È il valore istantaneo del registro derivativo espresso in bit.
Range valido: 0 ÷ 1024
deltaLRR-WNessunaDelta counter
È il valore che viene sommato al conteggio quando viene inviato un comando DELCNT. Valore espresso in unità di misura (Um).
Range valido: -999999 ÷ 999999

Stati

NomeDRACondizioniDescrizione
st_initF0RNessunaInitialization
Segnalazione di device inizializzato
0 = device non inizializzato.
1 = device inizializzato.
st_emrgF0RNessunaEmergency
Segnalazione di asse in emergenza.
0 = asse non in emergenza.
1 = asse in emergenza
st_tollF0RNessunaTolerance
Segnalazione di asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione di asse in tolleranza può essere ritardata tramite il parametro toldly.
0 = asse non in tolleranza.
1 = asse in tolleranza.
st_prsokF0RNessunaPreset Ok
Segnalazione di asse in tolleranza rispetto alla quota posta in esecuzione dal comando di START. La segnalazione di asse in tolleranza può essere ritardata tramite il parametro toldly.
0 = asse non in tolleranza.
1 = asse in tolleranza.
st_stillF1RNessunaStill
Segnalazione di asse fermo.
0 = asse in movimento.
1 = asse fermo.
st_prsonF0RNessunaPreset ON
Segnalazione di ricerca di preset asse in corso
0 = ricerca di preset non in corso.
1 = ricerca di preset in corso.
st_movdirF0RNessunaMovement direction
Segnalazione della direzione del movimento.
0 = avanti.
1 = indietro
st_looponF0RNessunaLoop ON
Segnalazione di asse in reazione di spazio.
0 = asse non in reazione di spazio.
1 = asse in reazione di spazio.
st_follerF0RNessunaFollowing error
Segnalazione di asse in errore di inseguimento (ritenuta 500 ms).
0 = asse non in errore di inseguimento.
1 = asse in errore di inseguimento.
st_regoffF0RNessunaRegulation
Segnala che la regolazione é disabilitata e che l'aggiornamento del DAC non viene effettuato.
0 = regolazione abilitata.
1 = regolazione disabilitata.
st_calF0RNessunaCalibration
Segnalazione di asse come generatore di tensione
0 = generatore di tensione asse disattivo.
1 = generatore di tensione asse attivo.
st_cntlockFRRNessunaCounter locked
Segnalazione di asse bloccato
0 = conteggio asse sbloccato
1 = conteggio asse bloccato.
st_cntrevFRRNessunaCounter reversed
Segnalazione di conteggio asse invertito
0 = Conteggio asse non invertito.
1 = Conteggio asse invertito.

Limitazioni

Esempio applicativo

File di configurazione

;*************************************************************************************
; Nome Modulo: Ex_Epic.CNF                     Progetto: Ex_EPICPOS
; Autore: QEM srl                              Data: 01/05/99
; Sistema: QMove1 / QCL3                       Libreria: 1LIB3B04
; Funzionalità: Esempio gestione EPICPOS       Release: 0
;------------------------------------- Note ------------------------------------------
; [1] - Applicativo di esempio per utilizzo device EPICPOS
;*************************************************************************************
 
;-------------------------------------------------------------------------------------
; Definizione Costanti
;-------------------------------------------------------------------------------------
CONST
 
;-------------------------------------------------------------------------------------
; Definizione Variabili SYSTEM
;-------------------------------------------------------------------------------------
SYSTEM
slQuotaPos    L                               ;Variabile per quota di posizionamento
slVelAsse     L                               ;Variabile per velocità asse
 
;-------------------------------------------------------------------------------------
; Definizione Variabili GLOBAL
;-------------------------------------------------------------------------------------
GLOBAL
gfMovMan      F                               ;Flag segnalazione movimenti manuali in
                                              ;corso
gfMovAuto     F                               ;Flag segnalazione movimenti automatici
                                              ;in corso
 
;-------------------------------------------------------------------------------------
; Definizione Variabili TIMER
;-------------------------------------------------------------------------------------
TIMER
 
;-------------------------------------------------------------------------------------
; Definizione DATAGROUP
;-------------------------------------------------------------------------------------
;DATAGROUP
 
;-------------------------------------------------------------------------------------
;Configurazione Bus
;-------------------------------------------------------------------------------------
BUS
      1   1CPUB      02
      2   1MIXA      00
      3   .
      4   .
 
;-------------------------------------------------------------------------------------
; Definizione Variabili INPUT
;-------------------------------------------------------------------------------------
INPUT
ifAvMan       F   2.INP01                     ;Ingresso di avanti manuale
ifInMan       F   2.INP02                     ;Ingresso di indietro manuale
ifStart       F   2.INP03                     ;Ingresso di START asse
ifStop        F   2.INP04                     ;Ingresso di STOP asse
 
;-------------------------------------------------------------------------------------
; Definizione Variabili OUTPUT
;-------------------------------------------------------------------------------------
OUTPUT
ofToll        F   2.OUT01                     ;uscita di asse in tolleranza
ofAxeFermo    F   2.OUT02                     ;uscita di asse fermo
 
;-------------------------------------------------------------------------------------
; Dichiarazione device interni
;-------------------------------------------------------------------------------------
INTDEVICE
;Nome   Tipo     TCamp    Contatore   Inter   AbilZero   OutAnal
Asse    EPICPOS  0004     2.CNT01     1       2.INP01    2.AN01
 
END

Gestione EPICPOS

;-------------------------------------------------------------------------------------
; Nome File: TASK_00.MOD
; Progetto : EX_EPICPOS
; Descrizione: Gestione Posizionamento
;-------------------------------------------------------------------------------------
 
;-------------------------------------------------------------------------------------
; Operazioni di Inizializzazione Asse
;-------------------------------------------------------------------------------------
 
Asse:cntratio = 100000                       ;Risoluz.encoder = Spazio in 1 giro
                                             ;encoder(Um) / impulsi giro encoder
Asse:maxvel = 100000                         ;Velocita` max. = Velocita` Asse con
                                             ;uscita analogica a 10V (CALON / vout=100)
Asse:maxpos = 999999                         ;Quota massima
Asse:minpos = -999999                        ;Quota minima
Asse:maxfollerr = 10000                      ;Errore di inseguimento
Asse:unitvel= 0                              ;Unita di tempo della velocità
Asse:decpt = 0                               ;Cifre decimali
Asse:rampmode = 0                            ;Tipo di rampe utilizzate
Asse:taccdec = 100                           ;Tempo di accelerazione e di decelerazione
Asse:tacc = 0                                ;Tempo di accelerazione (non utilizzato)
Asse:tdec = 0                                ;Tempo di decelerazione (non utilizzato)
Asse:tinv = 0                                ;Tempo di inversione asse
Asse:toll = 5                                ;Tolleranza
Asse:toldly = 10                             ;Tempo di ritardo segnalazione
                                             ;tolleranza
Asse:rtype = 1                               ;Tipo di riduzione profilo
Asse:stopt = 1                               ;Tipo di stop
Asse:prsmode = 0                             ;Tipo di ricerca di preset
Asse:prspos = 0                              ;Quota di preset
Asse:prsdir = 0                              ;Direzione della ricerca di preset
Asse:prsvel = (20 * Asse:maxvel)/100         ;Velocità di preset (20% della vel.max.)
Asse:sprsvel = (10 * Asse:maxvel)/100        ;Velocità di ricerca impulso di zero
                                             ;(10% della vel.max.)
Asse:offset = 0                              ;Tensione di offset
Asse:pgain = 10                              ;Guadagno proporzionale
Asse:feedfw = 1000                           ;Feedforward
Asse:integt = 0                              ;Tempo di integrale
Asse:derivt = 0                              ;Tempo derivativo
INIT Asse                                    ;Inizializza il device
WAIT Asse:st_init                            ;Attendi che il device sia inizializzato
CNTUNLOCK Asse                               ;Sblocca conteggio
WAIT NOT Asse:st_cntlock                     ;Attendi che il conteggio sia sbloccato
CNTDIR Asse                                  ;Imposta il senso del conteggio
WAIT NOT Asse:st_cntrev                      ;Attendi che sia impostato il senso del
                                             ;conteggio
REGON Asse                                   ;Abilita la regolazione
WAIT NOT Asse:st_regoff                      ;Attendi l'abilitazione alla regolazione
RESUME Asse                                  ;Togli l'asse dallo stato di emergenza
WAIT NOT Asse:st_emrg                        ;Attendi che l'asse non sia in emergenza
LOOPON Asse                                  ;Aggancia il loop di reazione dell'asse
WAIT Asse:st_loopon                          ;Attendi che sia agganciato il loop di
                                             ;reazione dell'asse
IF (slVelAsse EQ 0)                          ;Nel caso in cui il set di velocità
                                             ;dell'asse sia zero
  slVelAsse = 50                             ;Imposta una velocità di posizionamento
ENDIF
IF (slQuotaPos EQ 0)                         ;Nel caso in cui la quota di posizionamento
                                             ;dell'asse sia zero
  slQuotaPos = 2000                          ;Imposta una quota di posizionamento
ENDIF
 
;-------------------------------------------------------------------------------------
; Operazioni di Posizionamento
; ------------------------------ variabili utilizzate --------------------------------
; slVelAsse: Variabile impostabile che rappresenta la velocita' dell'asse
; (espressa in % della vel.max.)
; slQuotaPos: Variabile impostabile che rappresenta la quota di posizionamento dell'asse
; -------------------------------- flag utilizzati -----------------------------------
; gfMovMan: movimento manuale in corso
; gfMovAuto: Movimento automatico in corso
;-------------------------------------------------------------------------------------
MAIN:
 
;-------------------------------------------------------------------------------------
; Gestione uscite
;-------------------------------------------------------------------------------------
ofToll = Asse:st_toll                         ;Imposto l'uscita di tolleranza come lo
                                              ;stato di tolleranza
ofAxeFermo = Asse:st_still                    ;Imposto l'uscita di asse fermo come lo stato di
asse fermo
 
;-------------------------------------------------------------------------------------
; Gestione movimenti automatici
;-------------------------------------------------------------------------------------
IF ifStart                                    ;Attende l'ingresso di START
  IF NOT gfMovMan                             ;Controlla che non ci siano movimenti
                                              ;manuali
    IF Asse:st_still                          ;Controlla che l'asse sia fermo
      Asse:setvel=(slVelAsse*Asse:maxvel)/100 ;Imposta la velocità dell’asse
      Asse:setpos = slQuotaPos                ;Imposta la quota di posizionamento
      START Asse                              ;Esegue lo start dell'asse
      gfMovAuto = 1                           ;Segnala movimento automatico in corso
    ENDIF
  ENDIF
ENDIF
 
IF ifStop                                     ;Attende l'ingresso di STOP
  IF NOT Asse:st_still                        ;Controlla che l'asse NON sia fermo
    STOP Asse                                 ;Esegue lo stop dell'asse
  ENDIF
ENDIF
 
IF gfMovAuto                                  ;Controlla segnalazione movimento
                                              ;automatico in corso
  IF Asse:st_still                            ;Controlla che l'asse sia fermo
    gfMovAuto = 0                             ;Resetta stato di movimento Automatico
  ENDIF
ENDIF
 
;-------------------------------------------------------------------------------------
; Gestione movimenti manuali
;-------------------------------------------------------------------------------------
IF ifAvMan                                    ;Attende l'ingresso di movimento manuale
  IF NOT (gfMovAuto OR gfMovMan)              ;Controlla che non ci siano movimenti
                                              ;automatici o manuali
    IF Asse:st_still                          ;Controlla che l'asse sia fermo
      Asse:setvel=(slVelAsse*Asse:maxvel)/100 ;Imposta la velocità dell'asse
      MANFW Asse                              ;Avanti asse in manuale
      gfMovMan = 1                            ;Segnala movimento manuale in corso
    ENDIF
  ENDIF
ENDIF
IF ifInMan                                    ;Attende l'ingresso di movimento manuale
  IF NOT (gfMovAuto OR gfMovMan)              ;Controlla che non ci siano movimenti
                                              ;autometici o manuali
    IF Asse:st_still                          ;Controlla che l'asse sia fermo
      Asse:setvel=(slVelAsse*Asse:maxvel)/100 ;Imposta la velocita` dell'asse
      MANBW Asse                              ;Avanti asse in manuale
      gfMovMan = 1                            ;Segnala movimento manuale in corso
    ENDIF
  ENDIF
ENDIF
IF gfMovMan                                   ;Se l'asse si muove in manuale
  IF NOT (ifAvMan OR ifInMan)                 ;Se gli ingressi di avanti e indietro
                                              ;manuale sono OFF
    STOP Asse                                 ;Ferma l'asse
    gfMovMan = 0                              ;Togli la segnalazione di asse in
                                              ;movimento manuale
  ENDIF
ENDIF
 
;-------------------------------------------------------------------------------------
; Operazioni finali
;-------------------------------------------------------------------------------------
  WAIT 1
  JUMP MAIN
 
END